package de.hska.test;

import java.io.File;
import java.util.Collection;
import java.util.List;

import javax.ejb.Remote;
import javax.ejb.Stateless;

import de.hska.kundenverwaltung.KundeCreateAdresseException;
import de.hska.kundenverwaltung.KundeDeleteBestellungException;
import de.hska.kundenverwaltung.KundeDuplikatException;
import de.hska.kundenverwaltung.KundeInvalidIdException;
import de.hska.kundenverwaltung.KundeInvalidNachnameException;
import de.hska.kundenverwaltung.Kundenverwaltung;
import de.hska.kundenverwaltung.db.BildException;
import de.hska.kundenverwaltung.db.Kunde;
import de.hska.kundenverwaltung.db.KundeDeletedException;
import de.hska.kundenverwaltung.db.KundeNotFoundException;
import de.hska.kundenverwaltung.db.KundeUpdatedException;
import de.hska.util.JndiUtil;


@Stateless
@Remote(KundenverwaltungTestRemote.class)
public class KundenverwaltungTestBean implements KundenverwaltungTestRemote {
	private Kundenverwaltung kvProxy = JndiUtil.getKundenverwaltungLocal();


	public Collection<Kunde> createKunden(Collection<Kunde> kunden)
			                 throws KundeCreateAdresseException, KundeDuplikatException {
		return kvProxy.createKunden(kunden);
	}

	public void deleteKunden(Collection<Kunde> kunden)
			    throws KundeDeleteBestellungException {
		kvProxy.deleteKunden(kunden);
	}

	public Collection<Kunde> findAllKunden() {
		return kvProxy.findAllKunden();
	}


	public List<Kunde> findKunden(String nachname)
			           throws KundeNotFoundException, KundeInvalidNachnameException {
		return kvProxy.findKunden(nachname);
	}

	public List<Kunde> findKundenMitBestellungenUndLieferungen(String nachname,	boolean mitLieferungen)
	                   throws KundeNotFoundException, KundeInvalidNachnameException {
		return kvProxy.findKundenMitBestellungenUndLieferungen(nachname, mitLieferungen);
	}

	public Collection<Kunde> updateKunden(Collection<Kunde> kunden)
			                 throws KundeDuplikatException, KundeDeletedException, KundeUpdatedException {
		return kvProxy.updateKunden(kunden);
	}

	public List<Kunde> findKundenByNachnamePrefix(String nachnamePrefix) {
		return kvProxy.findKundenByNachnamePrefix(nachnamePrefix);
	}

	public void deleteKundeById(Long kundeId) throws KundeDeleteBestellungException, KundeInvalidIdException {
		kvProxy.deleteKundeById(kundeId);		
	}

	public Collection<Kunde> findAllKundenId() {
		return kvProxy.findAllKundenId();
	}

	public Kunde findKundeById(Long id) throws KundeNotFoundException, KundeInvalidIdException {
		return kvProxy.findKundeById(id);
	}

	public Kunde findKundeByUserName(String userName) throws KundeNotFoundException {
		return kvProxy.findKundeByUserName(userName);
	}

	public Kunde findKundeMitBestellungenById(Long id) throws KundeNotFoundException, KundeInvalidIdException {
		return kvProxy.findKundeMitBestellungenById(id);
	}

	public short getMaxKategorie() {
		return kvProxy.getMaxKategorie();
	}

	public float getMaxRabatt() {
		return kvProxy.getMaxRabatt();
	}

	public Kunde neuesBild(Long kundeId, byte[] bild, String mimeType)
			     throws KundeNotFoundException, BildException, KundeInvalidIdException {
		return kvProxy.neuesBild(kundeId, bild, mimeType);
	}

	@Override
	public List<String> findAllNachnamen() {
		return kvProxy.findAllNachnamen();
	}

	@Override
	public Kunde neuesBild(Long kundeId, File bildTmpFile, String extension)
			throws KundeNotFoundException, KundeInvalidIdException, BildException {
		return kvProxy.neuesBild(kundeId, bildTmpFile, extension);
	}

}
